from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time

from PIL import Image
from PIL import ImageGrab

import requests
from hashlib import md5

opt=Options()
opt.add_experimental_option('excludeSwitches',['enable-automation'])#关闭自动化提示
opt.add_argument("--start-maximized")#最大化
opt.add_argument('ignore-certificate-errors')#加上不出现私家连接
bro=webdriver.Chrome(r'C:\Users\hsk\Downloads\chromedriver_win32/chromedriver.exe',options=opt)


bro.get('https://10.6.133.106/ydata/login.do')


username=bro.find_element_by_name("userId")
password=bro.find_element_by_name("passwd")
vdcode=bro.find_element_by_name("imgtvalidate")
vdcode_img=bro.find_element_by_xpath('//*[@id="img"]')

time.sleep(20)
username.send_keys('140700zgq')
time.sleep(8)
password.send_keys('a123456!')

location=vdcode_img.location

size=vdcode_img.size
print(location,size)
box=(location['x'],location['y']+70,location['x']+size['width'],location['y']+70+size['height'])
print(box)

bro.save_screenshot('c:\\users\\hsk\desktop\\vdcode_3.png')
img=Image.open('c:\\users\\hsk\desktop\\vdcode_3.png')
vdcode_path='c:\\users\\hsk\\desktop\\vdcode_4.png'

frame=ImageGrab.grab(box)

#frame.show()
frame.save(vdcode_path)



class Chaojiying_Client(object):

    def __init__(self, username, password, soft_id):
        self.username = username
        password =  password.encode('utf8')
        self.password = md5(password).hexdigest()
        self.soft_id = soft_id
        self.base_params = {
            'user': self.username,
            'pass2': self.password,
            'softid': self.soft_id,
        }
        self.headers = {
            'Connection': 'Keep-Alive',
            'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',
        }

    def PostPic(self, im, codetype):
        """
        im: 图片字节
        codetype: 题目类型 参考 http://www.chaojiying.com/price.html
        """
        params = {
            'codetype': codetype,
        }
        params.update(self.base_params)
        files = {'userfile': ('ccc.jpg', im)}
        r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, files=files, headers=self.headers)
        return r.json()

    def ReportError(self, im_id):
        """
        im_id:报错题目的图片ID
        """
        params = {
            'id': im_id,
        }
        params.update(self.base_params)
        r = requests.post('http://upload.chaojiying.net/Upload/ReportError.php', data=params, headers=self.headers)
        return r.json()

chaojiying = Chaojiying_Client('zgq001', 'zgq071726', '924951')
im = open(vdcode_path, 'rb').read()
result=chaojiying.PostPic(im, 1004)['pic_str']
print(result)

vdcode.send_keys(result)
time.sleep(2)
login=bro.find_element_by_xpath('/html/body/map/area[1]')
time.sleep(3)
login.click()

